/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.resume.suspens.om.impl;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import org.apache.commons.lang.StringUtils;

import fr.generali.accueilclient.client.om.IAdresse;
import fr.generali.accueilclient.client.om.ICoordonneeBancaire;
import fr.generali.accueilclient.resume.contrat.om.IRole;
import fr.generali.accueilclient.resume.suspens.om.IOperation;
import fr.generali.accueilclient.utils.constantes.CodeRoleEnum;

/**
 * @author ebrouillard
 */
public class DTOOperation implements IOperation {

    /**
     * Statut des suspens actifs
     */
    private static final String STATUT_SUSPENS_INACTIF = "SS";

    /**
     * code situation du dossier (P, D, T)
     */
    private String codeAvancement;

    /**
     * libellé situation du dossier (Projet, Devis, Tarif)
     */
    private String libelleAvancement;

    /**
     * identifiant de l'acte de gestion
     */
    private String numeroContrat;

    /**
     * Le numéro de client
     */
    private String numeroClient;

    /**
     * Le code compagnie
     */
    private String codeCompagnie;

    /**
     * Le code produit
     */
    private String codeProduit;

    /**
     * libellé de l'acte de gestion
     */
    private String libelleProduit;

    /**
     * date de création de l'acte
     */
    private Date dateEffet;

    /**
     * La date echeance
     */
    private String echeance;

    /**
     * La date de resiliation
     */
    private Date dateResiliation;

    /**
     * Le rôle
     */
    private List<IRole> roles;

    /**
     * La nature
     */
    private String nature;

    /**
     * code statut de l'acte de gestion
     */
    private String statut;

    /**
     * La categorie
     */
    private String categorie;

    /**
     *
     */
    private String identifiantSouscripteur;

    /**
     *
     */
    private String identifiantPayeur;

    /**
     *
     */
    private String identifiantAssure;

    /**
     * libellé du statut
     */
    private String libelleStatut;

    /**
     * coordonnees bancaires
     */
    private List<ICoordonneeBancaire> coordonneesBancaires;

    /**
     * adresse
     */
    private IAdresse adresse;

    /**
     * codeStatistique
     */
    private String codeStatistique;

    /**
     * Type Intervention
     */
    private String natureAvenant;

    /**
     * Frequence
     */
    private String frequence;

    /**
     * Montant Annuel HT
     */
    private BigDecimal montantAnnuelHT;

    /**
     * Montant Annuel TTC
     */
    private BigDecimal montantAnnuelTTC;

    /**
     * Mode Paiement
     */
    private String modePaiement;

    /**
     * Date effet nouvelle affaire
     */
    private Date dateEffetNouvelleAffaire;

    /**
     * Motif fin activite
     */
    private String motifFinActivite;

    /**
     * Code portefeuille
     */
    private String codePortefeuille;

    /**
     * Numero Suspens
     */
    private String numeroSuspens;

    /**
     * Co-Souscripteur
     */
    private String coSouscripteur;

    /**
     * Nature recouvrement
     */
    private String natureRecouvrement;

    /**
     * Precision
     */
    private String precision;

    /**
     * mode gestion
     */
    private String modeGestion;

    /**
     * system origine
     */
    private String systemOrigine;

    /**************************************************************
     * ************* ACCESSEURS *****************************
     ***************************************************************/

    /**
     * {@inheritDoc}
     */
    public boolean isActif() {
        return !STATUT_SUSPENS_INACTIF.equals(statut);
    }

    /**
     * {@inheritDoc}
     */
    public IRole getAssure() {
        if (roles != null) {
            for (IRole role : roles) {
                if (CodeRoleEnum.ROLE_ASSURE.getCodeRole().equals(role.getRole())) {
                    return role;
                }
            }
        }
        return null;
    }

    /**
     * {@inheritDoc}
     */
    public IRole getPayeur() {
        if (roles != null) {
            for (IRole role : roles) {
                if (CodeRoleEnum.ROLE_PAYEUR.getCodeRole().equals(role.getRole())) {
                    return role;
                }
            }
        }
        return null;
    }

    /**
     * {@inheritDoc}
     */
    public IRole getSouscripteur() {
        if (roles != null) {
            for (IRole role : roles) {
                if (CodeRoleEnum.ROLE_SOUSCRIPTEUR.getCodeRole().equals(role.getRole())) {
                    return role;
                }
            }
        }
        return null;
    }

    /**
     * {@inheritDoc}
     */
    public String getCodeAvancement() {
        return codeAvancement;
    }

    /**
     * {@inheritDoc}
     */
    public void setCodeAvancement(String codeAvancement) {
        this.codeAvancement = codeAvancement;
    }

    /**
     * {@inheritDoc}
     */
    public String getLibelleAvancement() {
        return libelleAvancement;
    }

    /**
     * {@inheritDoc}
     */
    public void setLibelleAvancement(String libelleAvancement) {
        this.libelleAvancement = libelleAvancement;
    }

    /**
     * {@inheritDoc}
     */
    public String getNumeroContrat() {
        return numeroContrat;
    }

    /**
     * {@inheritDoc}
     */
    public void setNumeroContrat(String numeroContrat) {
        this.numeroContrat = numeroContrat;
    }

    /**
     * {@inheritDoc}
     */
    public String getCodeCompagnie() {
        return codeCompagnie;
    }

    /**
     * {@inheritDoc}
     */
    public void setCodeCompagnie(String codeCompagnie) {
        this.codeCompagnie = codeCompagnie;
    }

    /**
     * {@inheritDoc}
     */
    public String getCodeProduit() {
        return codeProduit;
    }

    /**
     * {@inheritDoc}
     */
    public void setCodeProduit(String codeProduit) {
        this.codeProduit = codeProduit;
    }

    /**
     * {@inheritDoc}
     */
    public String getLibelleProduit() {
        return libelleProduit;
    }

    /**
     * {@inheritDoc}
     */
    public void setLibelleProduit(String libelleProduit) {
        this.libelleProduit = libelleProduit;
    }

    /**
     * {@inheritDoc}
     */
    public Date getDateEffet() {
        return dateEffet;
    }

    /**
     * {@inheritDoc}
     */
    public void setDateEffet(Date dateEffet) {
        this.dateEffet = dateEffet;
    }

    /**
     * {@inheritDoc}
     */
    public List<IRole> getRoles() {
        return roles;
    }

    /**
     * {@inheritDoc}
     */
    public void setRoles(List<IRole> roles) {
        this.roles = roles;
    }

    /**
     * {@inheritDoc}
     */
    public String getNature() {
        return nature;
    }

    /**
     * {@inheritDoc}
     */
    public void setNature(String nature) {
        this.nature = nature;
    }

    /**
     * {@inheritDoc}
     */
    public String getStatut() {
        return statut;
    }

    /**
     * {@inheritDoc}
     */
    public void setStatut(String statut) {
        this.statut = statut;
    }

    /**
     * {@inheritDoc}
     */
    public String getCategorie() {
        return categorie;
    }

    /**
     * {@inheritDoc}
     */
    public void setCategorie(String categorie) {
        this.categorie = categorie;
    }

    /**
     * {@inheritDoc}
     */
    public String getIdentifiantAssure() {
        return identifiantAssure;
    }

    /**
     * {@inheritDoc}
     */
    public String getIdentifiantPayeur() {
        return identifiantPayeur;
    }

    /**
     * {@inheritDoc}
     */
    public String getIdentifiantSouscripteur() {
        return identifiantSouscripteur;
    }

    /**
     * {@inheritDoc}
     */
    public void setIdentifiantSouscripteur(String identifiantSouscripteur) {
        this.identifiantSouscripteur = identifiantSouscripteur;
    }

    /**
     * {@inheritDoc}
     */
    public void setIdentifiantPayeur(String identifiantPayeur) {
        this.identifiantPayeur = identifiantPayeur;
    }

    /**
     * {@inheritDoc}
     */
    public void setIdentifiantAssure(String identifiantAssure) {
        this.identifiantAssure = identifiantAssure;
    }

    /**
     * {@inheritDoc}
     */
    public Boolean isAssure() {
        return !(StringUtils.isEmpty(identifiantAssure));
    }

    /**
     * {@inheritDoc}
     */
    public Boolean isPayeur() {
        return !(StringUtils.isEmpty(identifiantPayeur));
    }

    /**
     * {@inheritDoc}
     */
    public Boolean isSouscripteur() {
        return !(StringUtils.isEmpty(identifiantSouscripteur));
    }

    /**
     * {@inheritDoc}
     */
    public void setLibelleStatut(String libelleStatut) {
        this.libelleStatut = libelleStatut;
    }

    /**
     * {@inheritDoc}
     */
    public String getLibelleStatut() {
        return libelleStatut;
    }

    /**
     * {@inheritDoc}
     */
    public List<ICoordonneeBancaire> getCoordonneesBancaires() {
        return coordonneesBancaires;
    }

    /**
     * {@inheritDoc}
     */
    public void setCoordonneesBancaires(List<ICoordonneeBancaire> coordonneesBancaires) {
        this.coordonneesBancaires = coordonneesBancaires;
    }

    /**
     * {@inheritDoc}
     */
    public IAdresse getAdresse() {
        return adresse;
    }

    /**
     * {@inheritDoc}
     */
    public void setAdresse(IAdresse adresse) {
        this.adresse = adresse;
    }

    /**
     * {@inheritDoc}
     */
    public String getEcheance() {
        return echeance;
    }

    /**
     * {@inheritDoc}
     */
    public void setEcheance(String echeance) {
        this.echeance = echeance;
    }

    /**
     * {@inheritDoc}
     */
    public String getCodeStatistique() {
        return codeStatistique;
    }

    /**
     * {@inheritDoc}
     */
    public void setCodeStatistique(String codeStatistique) {
        this.codeStatistique = codeStatistique;
    }

    /**
     * {@inheritDoc}
     */
    public Date getDateResiliation() {
        return dateResiliation;
    }

    /**
     * {@inheritDoc}
     */
    public void setDateResiliation(Date dateResiliation) {
        this.dateResiliation = dateResiliation;
    }

    /**
     * {@inheritDoc}
     */
    public String getNatureAvenant() {
        return natureAvenant;
    }

    /**
     * {@inheritDoc}
     */
    public void setNatureAvenant(String natureAvenant) {
        this.natureAvenant = natureAvenant;
    }

    /**
     * {@inheritDoc}
     */
    public String getFrequence() {
        return frequence;
    }

    /**
     * {@inheritDoc}
     */
    public void setFrequence(String frequence) {
        this.frequence = frequence;
    }

    /**
     * {@inheritDoc}
     */
    public BigDecimal getMontantAnnuelHT() {
        return montantAnnuelHT;
    }

    /**
     * {@inheritDoc}
     */
    public void setMontantAnnuelHT(BigDecimal montantAnnuelHT) {
        this.montantAnnuelHT = montantAnnuelHT;
    }

    /**
     * {@inheritDoc}
     */
    public BigDecimal getMontantAnnuelTTC() {
        return montantAnnuelTTC;
    }

    /**
     * {@inheritDoc}
     */
    public void setMontantAnnuelTTC(BigDecimal montantAnnuelTTC) {
        this.montantAnnuelTTC = montantAnnuelTTC;
    }

    /**
     * {@inheritDoc}
     */
    public String getModePaiement() {
        return modePaiement;
    }

    /**
     * {@inheritDoc}
     */
    public void setModePaiement(String modePaiement) {
        this.modePaiement = modePaiement;
    }

    /**
     * {@inheritDoc}
     */
    public Date getDateEffetNouvelleAffaire() {
        return dateEffetNouvelleAffaire;
    }

    /**
     * {@inheritDoc}
     */
    public void setDateEffetNouvelleAffaire(Date dateEffetNouvelleAffaire) {
        this.dateEffetNouvelleAffaire = dateEffetNouvelleAffaire;
    }

    /**
     * {@inheritDoc}
     */
    public String getMotifFinActivite() {
        return motifFinActivite;
    }

    /**
     * {@inheritDoc}
     */
    public void setMotifFinActivite(String motifFinActivite) {
        this.motifFinActivite = motifFinActivite;
    }

    /**
     * {@inheritDoc}
     */
    public String getCodePortefeuille() {
        return codePortefeuille;
    }

    /**
     * {@inheritDoc}
     */
    public void setCodePortefeuille(String codePortefeuille) {
        this.codePortefeuille = codePortefeuille;
    }

    /**
     * {@inheritDoc}
     */
    public String getNumeroSuspens() {
        return numeroSuspens;
    }

    /**
     * {@inheritDoc}
     */
    public void setNumeroSuspens(String numeroSuspens) {
        this.numeroSuspens = numeroSuspens;
    }

    /**
     * {@inheritDoc}
     */
    public String getCoSouscripteur() {
        return coSouscripteur;
    }

    /**
     * {@inheritDoc}
     */
    public void setCoSouscripteur(String coSouscripteur) {
        this.coSouscripteur = coSouscripteur;
    }

    /**
     * {@inheritDoc}
     */
    public String getNatureRecouvrement() {
        return natureRecouvrement;
    }

    /**
     * {@inheritDoc}
     */
    public void setNatureRecouvrement(String natureRecouvrement) {
        this.natureRecouvrement = natureRecouvrement;
    }

    /**
     * {@inheritDoc}
     */
    public String getPrecision() {
        return precision;
    }

    /**
     * {@inheritDoc}
     */
    public void setPrecision(String precision) {
        this.precision = precision;
    }

    /**
     * {@inheritDoc}
     */
    public String getModeGestion() {
        return modeGestion;
    }

    /**
     * {@inheritDoc}
     */
    public void setModeGestion(String modeGestion) {
        this.modeGestion = modeGestion;
    }

    /**
     * @return the numeroClient
     */
    public String getNumeroClient() {
        return this.numeroClient;
    }

    /**
     * @param numeroClient the numeroClient to set
     */
    public void setNumeroClient(String numeroClient) {
        this.numeroClient = numeroClient;
    }

    /**
     * {@inheritDoc}
     */
    public String getSystemOrigine() {
        return systemOrigine;
    }

    /**
     * {@inheritDoc}
     */
    public void setSystemOrigine(String systemOrigine) {
        this.systemOrigine = systemOrigine;
    }
}
